package com.personal.portal.admin.entity.dto;

import com.personal.portal.admin.entity.User;
import lombok.Data;

/**
 * 个人信息视图对象（返回给前端）
 * 过滤掉敏感信息，如密码等
 *
 * @author zhanghui
 * @version 1.0.0
 * @since 2025-11-13
 */
@Data
public class PersonalProfileVO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 姓名（真实姓名）
     */
    private String name;

    /**
     * 昵称（显示名称）
     */
    private String nickname;

    /**
     * 职位
     */
    private String position;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 电话号码
     */
    private String phone;

    /**
     * 所在城市
     */
    private String city;

    /**
     * 工作年限，例如：5年
     */
    private String workYears;

    /**
     * 个人简介
     */
    private String bio;

    /**
     * 头像链接
     */
    private String avatarUrl;

    /**
     * 出生日期
     */
    private String birthday;

    /**
     * 个人网站
     */
    private String website;

    /**
     * GitHub链接
     */
    private String githubUrl;

    /**
     * LinkedIn链接
     */
    private String linkedinUrl;

    /**
     * 博客链接
     */
    private String blogUrl;

    /**
     * 简历文件链接
     */
    private String resumeUrl;

    /**
     * 用户类型：admin-管理员 user-普通用户
     */
    private String userType;

    /**
     * 是否激活：0-未激活 1-已激活
     */
    private Integer isActive;

    /**
     * 是否公开显示（0-不显示，1-显示）
     */
    private Integer isPublic;

    /**
     * 创建时间
     */
    private String createTime;

    /**
     * 更新时间
     */
    private String updateTime;

    /**
     * 从User实体转换为VO（过滤敏感字段）
     */
    public static PersonalProfileVO fromProfile(User profile) {
        if (profile == null) {
            return null;
        }
        PersonalProfileVO vo = new PersonalProfileVO();
        vo.setId(profile.getId());
        vo.setName(profile.getName());
        vo.setNickname(profile.getNickname());
        vo.setPosition(profile.getPosition());
        vo.setEmail(profile.getEmail());
        vo.setPhone(profile.getPhone());
        vo.setCity(profile.getCity());
        vo.setWorkYears(profile.getWorkYears());
        vo.setBio(profile.getBio());
        vo.setAvatarUrl(profile.getAvatarUrl());
        vo.setBirthday(profile.getBirthday() != null ? profile.getBirthday().toString() : null);
        vo.setWebsite(profile.getWebsite());
        vo.setGithubUrl(profile.getGithubUrl());
        vo.setLinkedinUrl(profile.getLinkedinUrl());
        vo.setBlogUrl(profile.getBlogUrl());
        vo.setResumeUrl(profile.getResumeUrl());
        vo.setUserType(profile.getUserType());
        vo.setIsActive(profile.getIsActive());
        vo.setIsPublic(profile.getIsPublic());
        vo.setCreateTime(profile.getCreateTime());
        vo.setUpdateTime(profile.getUpdateTime());
        return vo;
    }
}
